package entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

@Entity

public class Rodamiento implements Serializable{
	
	private static final long serialVersionUID = 1L;
	/**
	 * @uml.property  name="codigoRodamiento"
	 */
	@Id
	private String codigoRodamiento;
	/**
	 * @uml.property  name="caracteristica"
	 */
	private String caracteristica;
	/**
	 * @uml.property  name="marca"
	 */
	private String marca;
	/**
	 * @uml.property  name="origen"
	 */
	private String origen;
	/**
	 * @uml.property  name="tipo"
	 */
	private String tipo;
	/**
	 * @uml.property  name="cod__propietario"
	 */
	private String cod__propietario;
	/**
	 * @uml.property  name="precio"
	 */
	private Float precio;
	/**
	 * @uml.property  name="proveedor"
	 * @uml.associationEnd  
	 */
	@Transient
	private Proveedor proveedor;
	/**
	 * @uml.property  name="listaMateriasPrima"
	 * @uml.associationEnd  multiplicity="(0 -1)" elementType="entities.ItemMateriaPrimaRodamiento"
	 */
	@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
	private List<ItemMateriaPrimaRodamiento> listaMateriasPrima;
	
	public Rodamiento(RodamientoVO rodamiento) {
		this.caracteristica = rodamiento.getCaracteristica();
		this.cod__propietario = rodamiento.getCod__propietario();
		this.codigoRodamiento = rodamiento.getCodigoRodamiento();
		this.marca = rodamiento.getMarca();
		this.origen = rodamiento.getOrigen();
		this.tipo = rodamiento.getTipo();
		this.precio = rodamiento.getPrecio();
		this.listaMateriasPrima = new ArrayList<ItemMateriaPrimaRodamiento>();
		for (ItemMateriaPrimaRodamientoVO itemMateriaPrimaVO : rodamiento.getListaMateriaPrima()) {
			ItemMateriaPrimaRodamiento itemMateriaPrimaRodamiento = new ItemMateriaPrimaRodamiento();
			MateriaPrima matPrim = new MateriaPrima(itemMateriaPrimaVO.getMateriaPrimaVO());
			itemMateriaPrimaRodamiento.setMateriaPrima(matPrim);
			itemMateriaPrimaRodamiento.setCantidad(itemMateriaPrimaVO.getCantidad());
			itemMateriaPrimaRodamiento.setIdItemMateriaPrimaRodamiento(itemMateriaPrimaVO.getIdItemMateriaPrimaRodamiento());
			listaMateriasPrima.add(itemMateriaPrimaRodamiento);
		}
	}
	
	/**
	 * @return
	 * @uml.property  name="codigoRodamiento"
	 */
	public String getCodigoRodamiento() {
		return codigoRodamiento;
	}
	/**
	 * @param codigoRodamiento
	 * @uml.property  name="codigoRodamiento"
	 */
	public void setCodigoRodamiento(String codigoRodamiento) {
		this.codigoRodamiento = codigoRodamiento;
	}
	/**
	 * @return
	 * @uml.property  name="caracteristica"
	 */
	public String getCaracteristica() {
		return caracteristica;
	}
	/**
	 * @param caracteristica
	 * @uml.property  name="caracteristica"
	 */
	public void setCaracteristica(String caracteristica) {
		this.caracteristica = caracteristica;
	}
	/**
	 * @return
	 * @uml.property  name="marca"
	 */
	public String getMarca() {
		return marca;
	}
	/**
	 * @param marca
	 * @uml.property  name="marca"
	 */
	public void setMarca(String marca) {
		this.marca = marca;
	}
	/**
	 * @return
	 * @uml.property  name="origen"
	 */
	public String getOrigen() {
		return origen;
	}
	/**
	 * @param origen
	 * @uml.property  name="origen"
	 */
	public void setOrigen(String origen) {
		this.origen = origen;
	}
	/**
	 * @return
	 * @uml.property  name="tipo"
	 */
	public String getTipo() {
		return tipo;
	}
	/**
	 * @param tipo
	 * @uml.property  name="tipo"
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	/**
	 * @return
	 * @uml.property  name="cod__propietario"
	 */
	public String getCod__propietario() {
		return cod__propietario;
	}
	/**
	 * @param cod__propietario
	 * @uml.property  name="cod__propietario"
	 */
	public void setCod__propietario(String cod__propietario) {
		this.cod__propietario = cod__propietario;
	}
	/**
	 * @return
	 * @uml.property  name="proveedor"
	 */
	public Proveedor getProveedor() {
		return proveedor;
	}
	/**
	 * @param proveedor
	 * @uml.property  name="proveedor"
	 */
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	public List<ItemMateriaPrimaRodamiento> getListaMateriasPrima() {
		return listaMateriasPrima;
	}

	public void setListaMateriasPrima(List<ItemMateriaPrimaRodamiento> listaMateriasPrima) {
		this.listaMateriasPrima = listaMateriasPrima;
	}

	/**
	 * @return
	 * @uml.property  name="precio"
	 */
	public Float getPrecio() {
		return precio;
	}

	/**
	 * @param precio
	 * @uml.property  name="precio"
	 */
	public void setPrecio(Float precio) {
		this.precio = precio;
	}
	
	

}
